home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #1 / Amiga Plus CD - 2000 - No. 1.iso / Tools / Dev / Meshwriter_lib / Library / meshwriter.readme < prev    next >
Text File  |  1999-12-03  |  12KB  |  490 lines

  1.  
  2.  
  3.                         MeshWriter.readme
  4.  
  5.  
  6.                           Version 0.2
  7.  
  8.  
  9.  
  10.  
  11. 28. march 1999                                 by Stephan Bielmann
  12.  
  13.  
  14.  
  15. Table of Contents
  16. -----------------
  17.  
  18.  1.     Licence
  19.  
  20.  2.     Overview
  21.  
  22.  3.     Requirements
  23.  
  24.  4.     Installation
  25.  
  26.  5.     Conventions
  27.  
  28.  6.     Function overview
  29.  
  30.  7.     Supported formats
  31.  
  32.  8.     Sample source and programs
  33.  
  34.  9.     Known problems.
  35.  
  36.  10.    Future
  37.  
  38.  
  39.  
  40.  
  41.    Stephan Bielmann
  42.    Im Dorf 2
  43.    1718 Rechthalten
  44.    Switzerland
  45.  
  46.    stephan.bielmann@rega-sense.ch
  47.    http://www.rega-sense.ch/~sbielmann/amiga/index.html
  48.  
  49.  
  50.  
  51.  
  52.  
  53. 1. Licence
  54. ---------
  55.  
  56.  
  57. The library and files in this distribution are freely distributable
  58. under the restrictions stated below, but are also copyright (c) to
  59. Stephan Bielmann.
  60.  
  61. The library is FREEWARE. Feel free to distribute it on any media as
  62. long as the content of this archive rests unchanged and complete.
  63.  
  64. By using this library in your program, FREEWARE/SHAREWARE/COMERCIAL,
  65. you may only include the library itself and a copy of the README file,
  66. instead of the whole archive. And because its FREEWARE you dont have
  67. to pay me something for it. Nothing against gifts :)
  68.  
  69. But you have to do the 3 points listed below :
  70.  
  71. 1: Adding a string like "Using meshwriter.library Copyright by Stephan Bielmann"
  72.    to your about or information window/text.
  73.  
  74. 2: Adding a similar remark in the documentation of your program with the URL
  75.    of my meshwriter homepage and e-mail of me.
  76.  
  77. 3: Just drop me a mail to inform me that you wrote a program which uses
  78.    my library and for which purpose it is.
  79.    
  80. Payment for this archive or parts of its content is only permitted
  81. to pay the media on which it resists itself. 
  82.  
  83. Everything in this distribution must be kept together, in original
  84. and unmodified form.
  85.  
  86.  
  87. THE LIBRARY IS PROVIDED TO YOU "AS IS," WITHOUT WARRANTY. THE ENTIRE
  88. RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
  89. THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
  90. SERVICING, REPAIR OR CORRECTION.
  91.  
  92.  
  93.  
  94.  
  95. 2. Overview
  96. -----------
  97.  
  98.  
  99. The library its goal is like the name says : to write meshes.
  100. And which has to be written this way that future releases, with
  101. more output formats can be used directly without to recompile
  102. programs who use it.
  103.  
  104.  
  105. Whats a mesh ? A 3 dimensional polygon object, which consists of vertices,
  106. each vertex is described by his position in the space along the x,y and z-axis.
  107.  
  108. Vertices can be put together by creating polygons which contain those vertices, or
  109. triangles, anyway : ALL IS THREATED LIKE A POLYGON.
  110.  
  111. Vertices with same coordinates are stored one time only to gain memory.
  112.  
  113. Further a mesh can have a name, which has nothing to do whith its file name, but 
  114. this one is used to identify it inside the prefered 3d tool of the user.
  115.  
  116. A copyright string, for developers :-), if they mean that people have to
  117. know which great program made this mesh.
  118.  
  119. Camera information and a single light source is not really mesh related but 
  120. in some cases used for a correct output, like POV.
  121.  
  122. Each polygon may have a surface information, a material. Materials have an
  123. ambient color (rgb), a shininess and a transparency information. 
  124.  
  125. Like OpenGL a current transformation matrix is used to transform each
  126. vertex when you add it. So you can perform translations, rotations and
  127. change the scale of your vertices.
  128.  
  129. The way of use it is in all cases the same, and that the real fun!
  130.  
  131. Make a program which uses the library, for automatic or paramterizable
  132. shape creation or even modelization with output or export functionality.
  133.  
  134. The library can handle multiple meshes at the same time, all depends on
  135. the amount of memory of the used system.
  136.  
  137. Once you think you added all your polygons, materials and so on let
  138. it display a save requester to the user, or do this at the beginning,
  139. to let him choice the output format.
  140.  
  141. Need to save it in multiple formats, just save it again, and again :-)
  142. by changing the output type.
  143.  
  144. Forgot something ? Just add it to the mesh and save it again.
  145.  
  146. Or if you want to write a program which can explicitly make only
  147. output of one or a few formats simple tell this to the library.
  148.  
  149.  
  150.  
  151.  
  152. 3. Requirements
  153. ---------------
  154.  
  155.  
  156. The library needs the utility.library V37 to parse TagItems and was
  157. programmed according the rules of the libraries V3.0.
  158.  
  159.  
  160.  
  161.  
  162. 4. Installation
  163. ---------------
  164.  
  165.  
  166. Just put a copy of the library into your libs: directory. 
  167.  
  168. The include files for developers should be copied into your
  169. developing environment.
  170.  
  171.  
  172.  
  173.  
  174. 5. Conventions
  175. --------------
  176.  
  177.  
  178. That things happens as they should, I had to define some conventions.
  179.  
  180.  -The coordinatesystem
  181.  
  182.         +Z
  183.          |    -Y
  184.          |   /
  185.          |  /
  186.          | /
  187.   -X____ |/____+X
  188.         /|
  189.        / |
  190.       /  |
  191.      /   |
  192.    +Y    |
  193.         -Z
  194.  
  195.   X from left to the right.
  196.   Y from behind to the front.
  197.   Z from the bottom to top.
  198.  
  199.   It is a right-handed coordinate system.
  200.  
  201.  -Polygons and triangles
  202.  
  203.   As mentioned before a triangle is nothing else than a polygon
  204.   with 3 vertices.
  205.  
  206.   Only convex polygons are supported. Others wont be saved
  207.   correct.
  208.  
  209.   All vertices have to be drawn counterclockwise! This is
  210.   for two reasons. The library itselfs need a possibility
  211.   to recognize hidden surfaces, and by the way all output
  212.   formats too.
  213.  
  214.  -Materials
  215.  
  216.   Colors are built with red, green and blue components from
  217.   0 up to 255.
  218.  
  219.   Values like shininess and transparency are made from 0.0 to 1.0.
  220.  
  221.  Remark
  222.  
  223.  The library makes all needed conversion internally, as for example
  224.  for Lightwave objects which axis are defined the other way, and  polygons
  225.  clockwise.
  226.  
  227.  
  228.  
  229. 6. Function overview
  230. --------------------
  231.  
  232.  
  233. For real documentation look at the autodoc. This is just to
  234. give you an idea of the functionset.
  235.  
  236. Each function begins with MWL for MeshWriterLibrary.
  237.  
  238. The name itself gives already a good idea what the function
  239. will to at least. Like MWL2DFileFormatExtensionGet.
  240.  
  241. 2D
  242. File
  243. Format
  244. Extension
  245. Get
  246.  
  247. Got it ? Easier that SQL ...
  248.  
  249.  
  250. Functions can be separated in different sub groups :
  251.  
  252.  2D functions
  253.  
  254.   MWL2DFileFormatExtensionGet
  255.   MWL2DFileFormatIDGet
  256.   MWL2DFileFormatNamesGet
  257.   MWL2DFileFormatNumberOfGet
  258.  
  259.  3D functions
  260.  
  261.   MWL3DFileFormatExtensionGet
  262.   MWL3DFileFormatIDGet
  263.   MWL3DFileFormatNamesGet
  264.   MWL3DFileFormatNumberOfGet
  265.  
  266.  Drawing mode functions
  267.  
  268.   MWLDrawModeIDGet
  269.   MWLDrawModeNamesGet
  270.   MWLDrawModeNumberOfGet
  271.  
  272.  Mesh manipulation functions
  273.  
  274.   MWLMeshCameraLightDefaultSet
  275.   MWLMeshCameraLookAtGet
  276.   MWLMeshCameraLookAtSet
  277.   MWLMeshCameraPositionGet
  278.   MWLMeshCameraPositionSet
  279.   MWLMeshCopyrightGet
  280.   MWLMeshCopyrightSet
  281.   MWLMeshCTMReset
  282.   MWLMeshDelete
  283.   MWLMeshLightColorGet
  284.   MWLMeshLightColorSet
  285.   MWLMeshLightPositionGet
  286.   MWLMeshLightPositionSet
  287.   MWLMeshMaterialAdd
  288.   MWLMeshMaterialAmbientColorGet
  289.   MWLMeshMaterialAmbientColorSet
  290.   MWLMeshMaterialDiffuseColorGet
  291.   MWLMeshMaterialDiffuseColorSet
  292.   MWLMeshMaterialNameGet
  293.   MWLMeshMaterialNameSet
  294.   MWLMeshMaterialShininessGet
  295.   MWLMeshMaterialShininessSet
  296.   MWLMeshMaterialTransparencyGet
  297.   MWLMeshMaterialTransparencySet
  298.   MWLMeshNameGet
  299.   MWLMeshNameSet
  300.   MWLMeshNew
  301.   MWLMeshNumberOfMaterialsGet
  302.   MWLMeshNumberOfPolygonsGet
  303.   MWLMeshNumberOfVerticesGet
  304.   MWLMeshPolygonAdd
  305.   MWLMeshPolygonMaterialSet
  306.   MWLMeshPolygonVertexAdd
  307.   MWLMeshPolygonVertexAssign
  308.   MWLMeshRotationChange
  309.   MWLMeshRotationGet
  310.   MWLMeshSave2D
  311.   MWLMeshSave3D
  312.   MWLMeshScaleChange
  313.   MWLMeshScaleGet
  314.   MWLMeshTranslationChange
  315.   MWLMeshTranslationGet
  316.   MWLMeshTriangleAdd
  317.   MWLMeshVertexAdd
  318.  
  319. 2d,3d and drawing mode functions can be used at every moment.
  320. To setup your program, if it runs under CLI or in a preferences
  321. window. Or at least before you save the mesh. With these functions
  322. you will in fact define the type of output.
  323.  
  324. Mesh manipulation can be made after creation of a new mesh
  325. MWLMeshNew until you drop it with MWLMeshDelete.
  326.  
  327.  
  328. Almost all functions are made as Get/Set pair, because values
  329. can be set by default and for interaction reasons.
  330.  
  331.  
  332.  
  333.  
  334. 7. Supported formats
  335. --------------------
  336.  
  337.  
  338.  Here a list of all supported output formats and what properties
  339.  of the library they get, or better how they are interpreting them.
  340.  
  341.  Formats which have to convert the polygons to triangles can be
  342.  lossy !! But only if you forgot to make polygons with at least
  343.  three vertices ;-)
  344.  
  345.  Always the ID, the name or description of the format and its extension
  346.  followed by the explanation.
  347.  
  348.  
  349.  3D formats
  350.  ==========
  351.  
  352.   T3DFRAWA   RAW ASCII            raw
  353.  
  354.    ASCII file which contains the name of the mesh on the
  355.    first line. Followed by triangles printed as sets of 6 floating
  356.    point values separated by a space.
  357.  
  358.  
  359.   T3DFRAWB   RAW binary           raw
  360.  
  361.    Binary representation of the above one. Name which is 0
  362.    terminated and then triangles as sets of 6 points, each point is
  363.    a 4 byte floating point value.
  364.  
  365.  
  366.   T3DFDXF    AutoCAD DXF          dxf
  367.  
  368.    ASCII output which contains a layer per materials and
  369.    interprets only the color information.
  370.  
  371.    The polygons are made with POLYLINE entities.
  372.  
  373.    Name and copyright are written.
  374.  
  375.  
  376.   T3DFVRML1  VRML 1               wrl
  377.  
  378.    ASCII file, which reflects the mesh as it is, with polygons
  379.    and materials indexed on each polygon.
  380.  
  381.    Name and copyright are written.
  382.  
  383.  
  384.   T3DFPOV3   POVRay 3.X           pov
  385.  
  386.    ASCII file with standart light source and camera to be able
  387.    to render the file and to get a correct view of it.
  388.  
  389.    Polygons saved as triangles and materials indexed to each triangle.
  390.  
  391.    Name and copyright are written.
  392.  
  393.  
  394.   T3DFLWOB   Lightwave            lwob
  395.  
  396.    Binary polygon represantation with full material support indexed
  397.    to each polygon.
  398.  
  399.  
  400.   T3DFTDDD   Imagine original     iob
  401.  
  402.    Binary triangle represantation. Material indexed per triangle but
  403.    without the shininess.
  404.  
  405.    18 characters of the name are written.
  406.  
  407.   T3DFTDDDH  Imagine huge         iob
  408.  
  409.    Binary, as above, but can store bigger objects. Supported on Amiga
  410.    since version 3.0 of Imagine.
  411.  
  412.  
  413.   T3DFREF4   Reflections 4.X      r4
  414.  
  415.    Binary triangle representation with materials indexed per triangle.
  416.  
  417.    Name is written.
  418.  
  419.    Recently renamed to monzoom or similar.
  420.  
  421.  
  422.   T3DFGEOA   VideoScape           geo
  423.  
  424.    Ascii polygon represantation with material information per polygon.
  425.  
  426.    Currently only the 16 default matte cololrs are built in.
  427.  
  428.  
  429.  2D formats
  430.  ==========
  431.  
  432.  In work.
  433.  
  434.  
  435. 8. Sample source an programs
  436. ----------------------------
  437.  
  438.  For the moment not a lot, but suffisent to show you what the
  439.  library is made for.
  440.  
  441.  The TestMeshWriterLib calls each function, creates 3 polygons
  442.  and writes them down on RAM: in each format, 3d and 2d.
  443.  
  444.  MeshWriter is a simple MUI program for tests supposed it was
  445.  written by using MUIBuilder by Eric Totel.
  446.  
  447.  Based on Stephan Bodmer his Geo2Vrml I wrote geo2any to give a
  448.  example of how to use the new functions for convertions. Source
  449.  is included. Thanks to Stephan for his help.
  450.  
  451.  
  452. 9. Known problems
  453. -----------------
  454.  
  455.  Very strange things are happening when computing the circle, as
  456.  delivered as sample, and save it as an Imagine object. Imagine
  457.  tells that it finds a bad chunk size.. however, I did not find
  458.  it.
  459.  
  460.  The camera settings for the POV format is still not the best
  461.  one, which is in case the internal camera which is used for
  462.  PostScript and VRML too.
  463.  
  464.  Some applications have problems when reading GEO files with
  465.  exponential value represantation.
  466.  
  467.  As I dont earn, like nobody else :), a correct documentation of
  468.  the Videoscape GEO format, some cases are not treated or
  469.  produce even errors.
  470.  
  471.  Seems that Reflections 4 does not handle my DXF output as it
  472.  should, other applications do it correct.
  473.  However, save it as Reflections and forget this one :)
  474.  
  475. 10. Future
  476. ---------
  477.  
  478.  Still not implemented are :
  479.  
  480.  -What about a better documentation, it will be HTML only, soon !
  481.  -PostScript support in the 2D ouput section has still some problems
  482.   wait for 0.3.
  483.  -Cinema4D,Aladdin4D,Real3D,Tornado3D,RayStorm,Studio3D,
  484.   and VideoScape binary as soon as I get the floating point
  485.   format descriptions.
  486.  -More background about the formats in the documentation.
  487.  -Source code savers, like GL for CyberGL, Mesa or OpenGL.
  488.  -Some more surface/material parameters.
  489.  -All needed overflow checks for the used output formats.
  490.